package com.frcdi.qms.masterdata.service.impl;

import java.util.List;

import com.frcdi.qms.common.constant.UserConstants;
import com.frcdi.qms.common.utils.StringUtils;
import com.frcdi.qms.masterdata.domain.Unit;
import com.frcdi.qms.masterdata.mapper.UnitMapper;
import com.frcdi.qms.masterdata.service.IUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 单位Service业务层处理
 *
 * @author cell
 * @date 2023-09-25
 */
@Service
public class UnitServiceImpl implements IUnitService
{
    @Autowired
    private UnitMapper unitMapper;

    /**
     * 查询单位
     *
     * @param id 单位主键
     * @return 单位
     */
    @Override
    public Unit selectUnitById(Long id)
    {
        return unitMapper.selectUnitById(id);
    }

    /**
     * 查询单位列表
     *
     * @param unit 单位
     * @return 单位
     */
    @Override
    public List<Unit> selectUnitList(Unit unit)
    {
        return unitMapper.selectUnitList(unit);
    }

    /**
     * 新增单位
     *
     * @param unit 单位
     * @return 结果
     */
    @Override
    public int insertUnit(Unit unit)
    {
        return unitMapper.insertUnit(unit);
    }

    /**
     * 修改单位
     *
     * @param unit 单位
     * @return 结果
     */
    @Override
    public int updateUnit(Unit unit)
    {
        return unitMapper.updateUnit(unit);
    }

    /**
     * 批量删除单位
     *
     * @param ids 需要删除的单位主键
     * @return 结果
     */
    @Override
    public int deleteUnitByIds(Long[] ids)
    {
        return unitMapper.deleteUnitByIds(ids);
    }

    /**
     * 删除单位信息
     *
     * @param id 单位主键
     * @return 结果
     */
    @Override
    public int deleteUnitById(Long id)
    {
        return unitMapper.deleteUnitById(id);
    }

    /**
     * 检查名称是否唯一
     *
     * @param unit 单位
     * @return 结果
     */
    @Override
    public boolean checkUnitNameUnique(Unit unit) {
        Long materialId = StringUtils.isNull(unit.getId()) ? -1L : unit.getId();
        Unit info = unitMapper.checkUnitNameUnique(unit.getUnitName(), unit.getUnitType());
        if (StringUtils.isNotNull(info) && info.getId().longValue() != materialId.longValue()) {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }
}
